﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using blacksoft.Models;
using System.Security.Cryptography;
using System.Text;
using System.Net;
using blacksoft.Constantes;
namespace blacksoft.Controllers
{
    public class SunatController : Controller
    {
        // GET: Sunat
        public ActionResult Index()
        {
            //NO ESTOY LOGUEADO EN EL SISTEMA
            if (Session["Permisos"] == null)
            {
                TempData["LogueatePrimero"] = SystemField.NO_LOGUEADO;
                return RedirectToAction("Index", "ValidarLogin");
            }
            //ESTOY LOGUEADO PERO NO TENGO PERMISO PARA REALIZAR ESTA ACCION
            if (!PerfilsController.TienePermiso((int)Session["Permisos"], PerfilsController.VENTA))
            {
                TempData["SinPermiso"] = SystemField.SIN_PERMISO;
                return RedirectToAction("Index", "MainPageEmployes");
            }
            return View();
        }
        [HttpPost]
        public ActionResult Index([Bind(Include = " RUC ")] mRuc miruc)
        {
            //NO ESTOY LOGUEADO EN EL SISTEMA
            if (Session["Permisos"] == null)
            {
                TempData["LogueatePrimero"] = SystemField.NO_LOGUEADO;
                return RedirectToAction("Index", "ValidarLogin");
            }
            //ESTOY LOGUEADO PERO NO TENGO PERMISO PARA REALIZAR ESTA ACCION
            if (!PerfilsController.TienePermiso((int)Session["Permisos"], PerfilsController.VENTA))
            {
                TempData["SinPermiso"] = SystemField.SIN_PERMISO;
                return RedirectToAction("Index", "MainPageEmployes");
            }
            if (!ModelState.IsValid)
            {
                return View();
            }
            return RedirectToAction("consulta", "Sunat", new
            {
                ruc = miruc.RUC.Trim()
            });
        }
        public ActionResult consulta(string ruc)
        {
            //NO ESTOY LOGUEADO EN EL SISTEMA
            if (Session["Permisos"] == null)
            {
                TempData["LogueatePrimero"] = SystemField.NO_LOGUEADO;
                return RedirectToAction("Index", "ValidarLogin");
            }
            //ESTOY LOGUEADO PERO NO TENGO PERMISO PARA REALIZAR ESTA ACCION
            if (!PerfilsController.TienePermiso((int)Session["Permisos"], PerfilsController.VENTA))
            {
                TempData["SinPermiso"] = SystemField.SIN_PERMISO;
                return RedirectToAction("Index", "MainPageEmployes");
            }
            if (ruc == null)
            {
                    TempData["NOHAYRUC"] = "Se requiere un RUC";
                    return RedirectToAction("index","Sunat");
            }
            try
            {
                    Usupador lectura = new Usupador("http://www.sunat.gob.pe/w/wapS01Alias?ruc=" + ruc);
                    string nombre = lectura.SacarContenido("<b>N&#xFA;mero Ruc. </b>", "<br/></small>");
                    int index = nombre.IndexOf('-') + 1;
                    string nombreEmp = WebUtility.HtmlDecode(nombre.Substring(index));
                    string Estado = lectura.SacarContenido("<small><b>Estado.</b>", "</small><br/>");
                    string Direccion = WebUtility.HtmlDecode(lectura.SacarContenido("><b>Direcci&#xF3;n.</b><br/>", "</small><br/>"));
                    string Situacion = lectura.SacarContenido("l>Situaci&#xF3;n.<b>", "</b></small><br/>");
                    string telefono = lectura.SacarContenido("<b>Tel&#xE9;fono(s).</b><br/>", "</small><br/>");
                    Empresa empresa = new Empresa();
                    empresa.Direccion = Direccion;
                    empresa.Estado = Estado;
                    empresa.nombreEmp = nombreEmp;
                    empresa.Situacion = Situacion;
                    empresa.telefono = telefono;
                    return View(empresa);
            }
            catch 
            {
                TempData["NOHAYRUC"] = "El RUC NO ESTA REGISTRADO EN SUNAT";
                return RedirectToAction("index", "Sunat");
            }
        }

        public static Persona getInfobyRUC(string ruc){
            Persona prov = null;
            if (ruc == null)
            {
                prov = null;
            }
            try
            {

                Usupador lectura = new Usupador("http://www.sunat.gob.pe/w/wapS01Alias?ruc=" + ruc);
                string nombre = lectura.SacarContenido("<b>N&#xFA;mero Ruc. </b>", "<br/></small>");
                int index = nombre.IndexOf('-') + 1;
                string nombreEmp = WebUtility.HtmlDecode(nombre.Substring(index));
                string Estado = lectura.SacarContenido("<small><b>Estado.</b>", "</small><br/>");
                string Direccion = WebUtility.HtmlDecode(lectura.SacarContenido("><b>Direcci&#xF3;n.</b><br/>", "</small><br/>"));
                string Situacion = lectura.SacarContenido("l>Situaci&#xF3;n.<b>", "</b></small><br/>");
                string telefono = lectura.SacarContenido("<b>Tel&#xE9;fono(s).</b><br/>", "</small><br/>");
                prov = new Persona();
                //Empresa empresa = new Empresa();
                //empresa.Direccion = Direccion;
                //empresa.Estado = Estado;
                //empresa.nombreEmp = nombreEmp;
                //empresa.Situacion = Situacion;
                //empresa.telefono = telefono;
                if (Direccion.Length > 49)
                {
                    Direccion = Direccion.Substring(0, 48);
                }
                if (nombreEmp.Length > 49)
                {
                    nombreEmp = nombreEmp.Substring(0, 48);
                }
                prov.Direccion = Direccion;
                prov.RazonSocial = nombreEmp;
                string tmp = telefono.Substring(0, 7);
                try { prov.Telefono = Int32.Parse(tmp); }
                catch {}
                prov.RUC = ruc;
            }
            catch
            {
                prov = null;
            }
            return prov;
        }
      }
}
